Skip to content

ci: set up JDK 21 for web UI tests#8

Merged
Emtemf merged 1 commit into
mainfrom
fix/web-ui-ci-jdk21
Mar 23, 2026
Merged

ci: set up JDK 21 for web UI tests#8
Emtemf merged 1 commit into
mainfrom
fix/web-ui-ci-jdk21

Conversation

@Emtemf

@Emtemf Emtemf commented Mar 23, 2026

Copy link
Copy Markdown
Owner

问题\n\nweb-ui 的 CI 会通过 core bridge 调用 Maven,但该 job 没有安装 JDK 21,导致 GitHub Actions 上出现 。\n\n## 修复\n\n- 为 job 补充 \n- 对齐 backend job 的 JDK 21 配置\n\n## 验证\n\n- 本地执行

web-ui@1.0.0 test:ci
node test/core-bridge-test.js && node test/diff-test.js && node test/render-test.js

======================================================================
API Codegen Web UI - Core Bridge Contract Tests

�[32m[PASS]�[0m 首页不再直接加载 legacy analyzer.js
�[32m[PASS]�[0m 首页不应再暴露 codegen-config.yaml 双文件输入提示
�[32m[PASS]�[0m web 层契约元数据应来自共享 bridge contract 资源
�[32m[PASS]�[0m analyze 接口应返回 core 检测到的 Swagger 路径问题
�[32m[PASS]�[0m analyze 接口应返回结构化字段 locator,而不是要求前端解析 api/field 字符串
�[32m[PASS]�[0m fix 接口应在 Swagger 输入下返回同格式 YAML
�[32m[PASS]�[0m analyze 失败时应返回带 bridge 元数据的 error envelope
�[32m[PASS]�[0m fix 失败时应返回带 bridge 元数据的 error envelope


总计: 8, 通过: 8, 失败: 0

========================================
Diff Tests - computeDiff

✓ computeDiff: 应检测到新增的行
✓ computeDiff: 应检测到删除的行
✓ computeDiff: 相同内容应标记为 equal

========================================
Diff Tests - computeImpact

✓ computeImpact: 应检测到路径修复 (//users -> /users)
✓ computeImpact: 应检测到反斜杠路径规范化修复
✓ computeImpact: 应检测到混合分隔符路径规范化修复
✓ computeImpact: 应检测到新增 API
✓ computeImpact: 应检测到新增参数

========================================
Diff Tests - Schema 层校验规则比较

✓ computeImpact: 应检测到 schema 层的 minimum 变化
✓ computeImpact: 应检测到 schema 层的 required 变化
✓ computeImpact: 应检测到 schema 层的 pattern 变化
(跳过 requestBody format 测试 - 需要额外处理)
✓ computeImpact: 应检测到 schema 层的 format 变化 (email)
✓ computeImpact: requestBody schema-only 变化应至少保留 YAML 差异
✓ computeImpact: 应检测到参数描述变化
✓ computeImpact: 应检测到路径前缀修复 (/XXX/ -> /)
✓ computeImpact: 不应检测到相同参数
✓ computeImpact: 路径修复时检测为修改
✓ computeImpact: /XXX/ 前缀修复时检测
✓ computeImpact: 路径不以/开头修复
✓ computeImpact: 重复反斜杠路径修复后仍应保留 schema 级变更
✓ computeImpact: 路径中的重复反斜杠应视为同一接口而非新增接口
✓ computeImpact: 路径重复斜杠修复后仍应保留 schema 级变更
✓ computeImpact: 仅 requestBody schema 变化可由 UI YAML fallback 预览

========================================
Test Summary

Passed: 23
Failed: 0

======================================================================
API Codegen Web UI - 渲染功能测试

--- 1. computeImpact 函数测试 ---

�[32m[PASS]�[0m #1 检测路径相同无变更
路径相同时应无变更,当前: 0个
�[32m[PASS]�[0m #2 检测路径 /XXX/ 前缀修复
检测到路径变更: 1 个API, 变更: [{"prop":"path","before":"/XXX/users/detail","after":"/users/detail"}]
�[32m[PASS]�[0m #3 检测参数 minLength 添加
检测到参数校验变更: 1 个API变更
�[32m[PASS]�[0m #4 检测参数数值范围添加
检测到minimum变更: [{"prop":"参数 page minimum","before":"(无)","after":1}]
�[32m[PASS]�[0m #5 检测参数描述添加
检测到description变更: 1 个API变更
�[32m[PASS]�[0m #6 检测参数类型添加
检测到type变更: 1 个API变更
�[32m[PASS]�[0m #7 检测字段校验规则添加
检测到字段变更: 1 个字段变更

--- 2. 变更详情格式化测试 ---

�[32m[PASS]�[0m #8 格式化 minLength=1 变更
变更前: 参数 keyword: 缺失最小长度校验, 变更后: → 新增 @SiZe(min=1)
�[32m[PASS]�[0m #9 格式化 minLength=0 变更(历史兼容)
变更前: 参数 keyword: 缺失最大长度校验, 变更后: → 新增 @SiZe(max=255)
�[32m[PASS]�[0m #10 格式化 minimum 变更
变更前: 参数 page: 缺失最小值校验, 变更后: → 新增 @min(1)
�[32m[PASS]�[0m #11 格式化 maximum 变更
变更前: 参数 size: 缺失最大值校验, 变更后: → 新增 @max(100)
�[32m[PASS]�[0m #12 格式化 pattern 变更
变更前: 参数 email: 缺失正则校验, 变更后: → 新增 @pattern(regexp="^[w-.]+@([w-]+.)+[w-]{2,4}$")
�[32m[PASS]�[0m #13 格式化 description 变更
变更前: 参数 id: 缺少描述, 变更后: → 描述: User ID
�[32m[PASS]�[0m #14 格式化 type 变更
变更前: 参数 page: 缺少类型, 变更后: → 类型: integer

--- 3. 边界情况测试 ---

�[32m[PASS]�[0m #15 无变更时应返回空
无变更时应返回空,当前: 0个API, 0个字段
�[32m[PASS]�[0m #16 多参数变更应全部检测
检测到 1 个API变更,共 6 处变更
�[32m[PASS]�[0m #17 Swagger 资源组注解应透传到预览模型
类注解: ["@TenantScoped"], 方法注解: ["@Permission("user.read")"]
�[32m[PASS]�[0m #18 Swagger 归一化到 core YAML 时应回退为非结构化差异
跨结构对比不应误报结构化变更,当前: 0 个 API, 0 个字段
�[32m[PASS]�[0m #19 index.html 不应再包含 codegen-config.yaml 双文件提示
单一输入模式下不应再保留第二份配置文件相关文案
�[32m[PASS]�[0m #20 Java 预览应显示资源组与方法注解
// 资源组注解
@TenantScoped
// 方法注解
@Permission("user.read")
@GetMapping("/users")

--- 4. Core Contract UI 行为测试 ---

�[32m[PASS]�[0m #21 应优先使用 core 返回的 fixable=false
UI 不应再因为 message 命中旧规则而覆盖 core 的 fixable=false
�[32m[PASS]�[0m #22 应优先使用 core 返回的 fixable=true
UI 应接受 core 的 fixable=true,而不是依赖前端关键字猜测
�[32m[PASS]�[0m #23 缺少 fixable 元数据时不应再回退到 message 猜测
UI 不应在缺少 contract 元数据时自行推断可修复性
�[32m[PASS]�[0m #24 缺少定位信息的人工问题不应显示可点击定位按钮
没有 locator 的问题不应再依赖 api/field 字符串推断定位能力
�[32m[PASS]�[0m #25 带有定位信息的人工问题仍可点击定位
只有 core 提供稳定 locator 时 UI 才应显示可点击的手动定位入口
�[32m[PASS]�[0m #26 应基于 operationId 和 field 在 Swagger 中定位参数行
期望定位到参数定义行 7,当前: 7
�[32m[PASS]�[0m #27 应基于 name 和 field 在 custom YAML 中定位字段行
期望定位到字段定义行 8,当前: 8
�[32m[PASS]�[0m #28 路径类问题应优先定位到路径行
期望定位到路径行 3,当前: 3

======================================================================
测试报告

总计: 28 个测试
�[32m通过: 28�[0m
�[31m失败: 0�[0m

====================================================================== 通过\n

@Emtemf Emtemf merged commit 5940305 into main Mar 23, 2026
2 checks passed
@Emtemf Emtemf deleted the fix/web-ui-ci-jdk21 branch March 23, 2026 14:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant